import { create } from 'zustand';
import type { typeItem } from '../models/cateGoryModel';
import { addCateGoryApi, editCateGoryApi, getTypeList } from '../apis/cateGoryApi';
import { flagToTree } from '../utils/flatToTree';

interface TypeState {
/**
 * 定义了一系列与熊的数量、列表操作和模态框状态相关的属性和方法
 */
	bears: number; // 熊的数量
	increase: (by: number) => void; // 增加熊的数量的函数，接受一个数字参数
	originList: typeItem[]; // 原始类型列表
	typelist: typeItem[]; // 当前显示的类型列表
	getTypeList: () => Promise<void>; // 获取类型列表的异步方法
	addCateGory: (obj: typeItem) => Promise<void>; // 添加分类的异步方法，接受一个typeItem对象作为参数
	editCategory: (obj: typeItem) => Promise<void>; // 编辑分类的异步方法，接受一个typeItem对象作为参数
	isModalOpen: boolean; // 控制模态框是否打开的状态
	setIsModalOpen: (isModalOpen: boolean) => void; // 设置模态框打开状态的方法
}

export const useTypeStore = create<TypeState>()((set) => ({
	bears: 0,
	increase: (by) => set((state) => ({ bears: state.bears + by })),
	typelist: [],
	originList: [],
	getTypeList: async () => {
		const res = await getTypeList();
		// console.log(res);
		set({ originList: res });
		const newData = flagToTree(res);
		set({ typelist: newData });
	},
	addCateGory: async (obj) => {
		await addCateGoryApi(obj);
	},
	editCategory: async (obj) => {
		await editCateGoryApi(obj);
	},
	isModalOpen: false,
	setIsModalOpen: (isModalOpen) => set({ isModalOpen }),
}));
